package main

/*
* Content: 定义结构体Tag、获取结构体Tag
* --------------------------------------------------
* Go语言中的Tag语法: https://blog.csdn.net/big_white_py/article/details/104025579
 */

import (
	"fmt"
	"reflect"
)

// 定义结构体Tag
type book struct {
	title string `name:"xqz:18;wss:17" hobby:"dance"`
	page  int
}

func MyTag() {

	// 获取结构体Tag
	fmt.Println("--------------------获取结构体Tag--------------------")

	// 初始化结构体
	myBook := book{
		title: "Java",
		page:  819,
	}

	// 获取结构体类型
	typeBook := reflect.TypeOf(myBook)

	// 获取结构体 tag
	myTag, _ := typeBook.FieldByName("title")
	fmt.Printf("获取到的tag信息: %v\n", myTag)

	// 获取 key 对应的 Tag
	value, ok := myTag.Tag.Lookup("name")
	if ok {
		fmt.Printf("name对应的Tag为: %s\n", value) // "xqz:18;wss:17"
	} else {
		fmt.Println("没有获取到对应的Tag！")
	}

}
